Conversión de Datos (Paquete strconv)
Cuando capturamos datos con bufio, Go los recibe como un string. Para realizar operaciones matemáticas, debemos convertirlos a tipos numéricos (int, float, etc.) utilizando el paquete strconv.
1. Convertir String a Entero (ParseInt)
Es la función más completa para convertir texto en números enteros.
numero, err := strconv.ParseInt(texto, base, bitSize)
Parámetros técnicos:
-
s(string): El texto que quieres convertir (ej:"100"). -
base(int): El sistema numérico del texto.-
10: Decimal (el más usado). -
2: Binario. -
16: Hexadecimal. -
0: Autodetectar (según prefijos como0x).
-
-
bitSize(int): El tamaño del tipo de destino.-
0, 8, 16, 32, 64. Define si el número debe caber en unint8,int16, etc. -
Nota: Aunque definas un tamaño menor, la función siempre devuelve un tipo
int64.
-
2. La vía rápida: Atoi (S-to-i)
Si solo necesitas convertir un string a un entero común (int) en base 10, existe una función simplificada llamada Atoi (String to Integer).
texto := "25"
numero, err := strconv.Atoi(texto)
// Es el equivalente exacto a:
// strconv.ParseInt(texto, 10, 0)
3. Convertir String a Decimal (ParseFloat)
Para números con punto decimal, usamos ParseFloat.
texto := "3.1416"
// El segundo parámetro es el bitSize (32 o 64)
decimal, err := strconv.ParseFloat(texto, 64)
4. El camino inverso: Número a String
A veces necesitas convertir un número en texto (por ejemplo, para concatenarlo en un mensaje o guardarlo en un archivo).
De Entero a String (Itoa)
edad := 30
texto := strconv.Itoa(edad) // "Integer to ASCII"
De Decimal a String (FormatFloat)
Es más complejo porque requiere definir el formato y la precisión.
valor := 12.3456
// 'f' significa sin exponente, 2 es la cantidad de decimales, 64 es el tamaño
texto := strconv.FormatFloat(valor, 'f', 2, 64) // Resultado: "12.35"
💡 Tips:
[!IMPORTANT] Manejo de Tipos: Recuerda que
ParseIntsiempre devuelve unint64. Si tu función espera unintnormal, deberás convertirlo manualmente después de la función:resultadoFinal := int(numeroConvertido)
[!WARNING] Limpieza previa: Antes de usar
strconv, asegúrate de usarstrings.TrimSpace(texto)para eliminar saltos de línea (\n) o espacios accidentales, de lo contrario la conversión fallará con un error.